package com.wx.mall.goods.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wx.mall.common.api.CommonPage;
import com.wx.mall.common.api.PageVo;
import com.wx.mall.common.vo.goods.SpuVo;
import com.wx.mall.goods.entity.Spu;
import com.wx.mall.goods.vo.req.SpuMatchVo;
import com.wx.mall.goods.vo.resp.DicountVo;
import com.wx.mall.goods.vo.resp.SpuCountVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ljl
 * @since 2020-04-17
 */
public interface ISpuService extends IService<Spu> {

    /**
     *根据分类ID获取数据
     * */
    DicountVo getSpuByCategoryId(String categoryId);

    /**
     *根据名称获取到数据(模糊查询)
     * */

    List<Spu> getByName(String name);


    /**
     *根据名称获取到数据(精准查询)
     * */

    Spu getByNameT(String name);

    /**
     * 分页查询 商品SPU
     *
     * @param vo 分页vo
     * @return
     */
    CommonPage<SpuVo> pageList(PageVo vo);

    /**
     * 统计商品SPU状态
     *
     * @return
     */
    SpuCountVo countSpu();

    /**
     * 根据SPU编号 模糊查询 并分页
     *
     * @param vo
     * @return
     */
    CommonPage<SpuVo> pageMatch(SpuMatchVo vo);

    /**
     * 根据SPU编号 模糊查询 并分页 2.0版
     *
     * @param vo
     * @return
     */
    CommonPage<SpuVo> pageMatchRecycle(SpuMatchVo vo);

    /**
     * 添加商品SPU 并返回当前SPU的id
     */
    Integer insertEntity(SpuVo vo);

    /**
     * 根据id软删除数据
     */
    void deleteEntity(Integer id);

    /**
     * 根据id获取单条数据
     */
    SpuVo selectEntity(Integer id);

    /**
     * 根据商品货号获取单条数据
     */
    SpuVo selectOneByEncode(SpuVo vo);

    /**
     * 更新商品SPU
     */
    void updateEntity(SpuVo vo);

    /**
     * 图片上传
     */
    Map<String, String> uploadImage(MultipartFile file, String name);

    /**
     * 图片上传
     */
    Boolean deleteImage(String fileName);

}
